package com.tanhua.server.controller;


import com.tanhua.domain.db.User;
import com.tanhua.server.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/user")

public class LoginController {

    // controller只做参数获取和数据返回
    @Autowired
    private UserService userService;

    /**
     * 用户登录- 发送验证码
     *  请求连接 Post /user/login
     *  请求参数:
     *      body类型:(json)
     *      {
     *          "phone":"1231313"
     *      }
     *      返回值YApi里面虽然没有 不代表没有
     *      ResponseEntity
     */

    @PostMapping("/login")
    public ResponseEntity login(@RequestBody Map map){
        //int i=1/0;
        //首先获取手机号码
        String mobile = (String) map.get("phone");

        //调用service发送短信
        return  userService.sendMsg(mobile);

    }

    /**
     * 用户登录 手机号和验证码的一个校验
     * 请求连接POST/user/loginVerification
     * 请求参数
     *      Body:
     *          phone,verificationCode
     *  返回值
     *      ResponseEntity:
     *          token和isNew组成的一个对象 或者map
     */

    @PostMapping("/loginVerification")
    public ResponseEntity loginVerification(@RequestBody Map map){
        //1.获取请求参数
        String phone = (String) map.get("phone");//手机号
        String verificationCode = (String) map.get("verificationCode");//验证码
        //2.调用service
        return userService.login(phone,verificationCode);
    }


    /**
     * 根据手机号码查询
     * 请求连接 Get方法 get方式
     * 参数 mobile]
     * 开发接口的时候
     *      返回值:ResponseEntity
     *      可以自定义返回状态码  500
     *      携带返回的信息 把对象换成ResponseEntity
     */
    @GetMapping("/findByMobile")
    public ResponseEntity findUser(String mobile){
        return  userService.findUser(mobile);

    }


    /**
     * 保存用户
     *请求连接:past方法
     * 参数json
     * {
     *     mobile:xxx
     *     password:xxx
     * }
     */
    @PostMapping("/saveUser")
    public ResponseEntity saveUser(@RequestBody User user){
        /**
         * 业务逻辑 ,参数配置和转化
         * 操作redis 发送短信  文件上传
         * 业务代码 工具调用 将代码抽取到service
         */

        return userService.saveUser(user);
    }
}
